불&멀티프로세싱 데드 스위치 python

0

질문

내가 만들려고 했던 이 논리는 경우 그래서 나는 메시지에 갈등을 포함하는"911"그것은 파괴하는 스크립트나 전화를 몇 가지 기능과 멈추지 타이머 im 많이 직면의 오류 및 생각할 수 없기 때문 적절한 방법으로 할...

모든 도움이 되나요?

from time import sleep
import discord
import multiprocessing

client = discord.Client()
manager = multiprocessing.Manager()
sign = manager.boolean(False)

def Timer(sign):
    for second in range(15):
        if sign == True:
            print("bloooock")
            break
        if sign == False:
            print("passsssss")
            sleep(1)
def discord_message(client, sign):
    @client.event
    async def on_ready():
        print('Logged on as', client)
    async def on_message(message):
        messageContent = message.content
        if len(messageContent) > 0:
            if messageContent == str("911"):
                sign = manager.bool(True)
    client.run('###')
if __name__ == '__main__':
    freeze_support()
    p1 = multiprocessing.Process(target=Timer, args=(sign,))
    p2 = multiprocessing.Process(target=discord_message, args=(client, sign,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
discord discord.py python python-3.x
2021-11-23 22:45:54
1

최고의 응답

1

을 설정하면 변수 내에서 기능,그것은 기본적으로 로컬 범위가 있습니다. 이 보면 예제:

a = 1
def f(): a = 2
f()
print(a)

그것을 시도하는 온라인!

이 출력 1.

a = 1
def f(): print(a); a = 2
f()
print(a)

그것을 시도하는 온라인!

이 것이 실제로 오류기 때문에,설정 이후 a = 2 에서 기능 f, a 된 지역 변수 그래서 print(a) 오류되지 않기 때문에 정의에서는 점이다.

이러한 문제를 해결하기 위해 넣 global a 상단에 있는 기능입니다. 귀하의 경우에,마 global signdef on_message 그래서 다음과 같:

def discord_message(client, sign):
    ...
    async def on_message(message):
        global sign
        ...

지금 sign = manager.bool(True) 가 설정되고,그렇지 않은 영향을 미치는 변수 글로벌 signTimer 읽고 있습니다.

또한,나는 당신이 필요하다고 생각하는 추가 @client.eventasync def on_message 뿐만 아니라.

2021-11-23 23:20:31

감사합니다 그것은 그렇게 잘 작동:)
Joseph Yosoevsky

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................