gpt4 book ai didi

Python overgiving变量从一个线程到另一个多线程

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:18 25 4
gpt4 key购买 nike

如何在这个多线程 Szenario 中将变量从 _While.py 赋给 __scheduler.py?我尝试了很多东西,但似乎没有任何效果。

线程.py

from multiprocessing import Process
import _While
import _Scheduler

if __name__ == '__main__':
p1 = Process(target=_While.main)
p1.start()
p2 = Process(target=_Scheduler.main)
p2.start()

_While.py

import time
def main():

while True:
print "while"
time.sleep(0.5)
"""getting button status"""
"""giving button status to _Scheudler._scheduler"""

__Scheduler.py

import logging
import time
from apscheduler.scheduler import Scheduler
from _While import """button status"""

def _scheduler():
print "scheduler"

while """button status"""==True:
print "Button is pressed"
time.sleep(0.5)


def main():
logging.basicConfig()
scheduler = Scheduler(standalone=True)
scheduler.add_interval_job(_scheduler, seconds=2)
scheduler.start()

if __name__ == '__main__':
main()

解决方法:

线程.py

from multiprocessing import Process, Value, Array
import time
import _While
import _Scheduler

if __name__ == '__main__':

num = Value('d', 0.0)
arr = Array('i', range(10))

p1 = Process(target=_While.main, args=(num, arr))
p1.start()
p2 = Process(target=_Scheduler.main, args=(num, arr))
p2.start()
p1.join()
p2.join()

print num.value

_While

import time
def main(num, arr):
while True:
print "while"
num.value = 1
time.sleep(10)
"""getting button status"""
"""giving button status to _Scheudler._scheduler"""

__Scheduler.py

import logging
from apscheduler.scheduler import Scheduler

def _scheduler(num, arr):
while True:
print num.value
if num.value == 1:
print "mongo"
num.value = 0
break

def main(num, arr):
logging.basicConfig()
scheduler = Scheduler(standalone=True)
scheduler.add_interval_job(_scheduler, args=(num, arr), seconds=2)
scheduler.start()

if __name__ == '__main__':
main()

剩下的唯一问题是我不能在不使用 Array 的情况下使用 Value

最佳答案

在创建 p1 和 p2 之前在 Threads.py 中创建一个 multiprocessing.Value 的实例,然后将 Value 的实例作为参数传递给 p1 和 p2,并更改 _While.py 和 _Scheduler.py 的 main() 方法接受新的值参数。

类似于此处的操作http://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes

您也可以按照 Euegene C 的建议使用队列或管道。可以在此处找到示例 http://docs.python.org/2/library/multiprocessing.html#exchanging-objects-between-processes

关于Python overgiving变量从一个线程到另一个多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22619324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com