xuhao = [device.split('\t')[0] for device in adb_devices if 'emulator' in device] def main(): jiaoben=index.zhuxunhuanlei() jinchengs=[] for xu in range(len(xuhao)): jincheng=multiprocessing.Process(target=jiaoben.zhuxunhuan,args=(xuhao[xu],)) jinchengs.append(jincheng) jincheng.start() for jincheng in jinchengs: jincheng.join() if name == 'main': multiprocessing.freeze_support() main() 如何打印10个 子程序的一个变量 子程序是死循环
时间: 2024-02-16 18:00:51 浏览: 81
xuhao.rar_ cadlisp_CADLISP_CADLISP编写序号
你可以使用`multiprocessing.Queue()`实现主进程和子进程之间的通信,将子程序中需要打印的变量通过队列传递给主进程,再在主进程中进行打印。由于子程序是死循环,需要在主进程中通过`jincheng.terminate()`函数杀死子进程。以下是一个示例代码:
```python
import multiprocessing
import time
import index
def worker(q, device):
jiaoben = index.zhuxunhuanlei()
while True:
variable = jiaoben.zhuxunhuan(device)
q.put(variable)
def main():
q = multiprocessing.Queue()
jinchengs = []
for device in xuhao:
jincheng = multiprocessing.Process(target=worker, args=(q, device))
jinchengs.append(jincheng)
jincheng.start()
# 等待子程序运行一段时间
time.sleep(10)
# 杀死子进程
for jincheng in jinchengs:
jincheng.terminate()
# 从队列中读取子程序中的变量并打印
for i in range(10):
variable = q.get()
print("Variable %d: %s" % (i + 1, variable))
if __name__ == '__main__':
multiprocessing.freeze_support()
xuhao = [device.split('\t')[0] for device in adb_devices if 'emulator' in device]
main()
```
这个代码会创建一个队列`q`,将子程序中需要打印的变量通过队列传递给主进程,并在主进程中进行打印。`worker()`函数是子进程执行的函数,其中`variable`是子程序中需要打印的变量,通过`q.put()`函数将其放入队列`q`中。在主进程中,先让子程序运行一段时间,然后通过`jincheng.terminate()`函数杀死子进程。最后,使用`q.get()`函数从队列中读取子程序中的变量,并打印出来。
阅读全文