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() 获取子进程的一个参数xuhao并打印
时间: 2024-02-16 07:00:43 浏览: 88
在主进程中,我们创建了多个子进程,每个子进程都有一个参数xuhao,现在需要在主进程中获取这个参数并打印出来。
可以将xuhao作为参数传递给主函数main(),然后在main()函数中打印出来。具体实现如下:
```python
import multiprocessing
# 假设xuhao是一个全局变量,或者已经在主进程中定义好了
def main(xuhao):
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(xuhao)
print("xuhao参数:", xuhao)
```
这样就可以在主进程中获取到xuhao参数并打印出来了。
相关问题
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() 获取子进程的数据并打印
在你的代码中,每个子进程都是在一个新的进程中运行的,因此你需要使用进程间通信来获取子进程的数据。以下是一个示例代码:
```python
import multiprocessing
import index
def run_child_process(device_id, queue):
jiaoben = index.zhuxunhuanlei()
result = jiaoben.zhuxunhuan(device_id)
queue.put(result)
def main():
adb_devices = ['emulator-5554\tdevice', 'emulator-5556\tdevice']
device_ids = [device.split('\t')[0] for device in adb_devices if 'emulator' in device]
processes = []
results = multiprocessing.Queue()
for device_id in device_ids:
process = multiprocessing.Process(target=run_child_process, args=(device_id, results))
processes.append(process)
process.start()
for process in processes:
process.join()
while not results.empty():
result = results.get()
print(result)
if __name__ == '__main__':
multiprocessing.freeze_support()
main()
```
在这个示例代码中,我们创建了一个`multiprocessing.Queue`对象来存储子进程返回的数据。在每个子进程中,我们将数据加入这个队列中,然后在主进程中使用循环从队列中读取数据并打印。需要注意的是,在使用`multiprocessing.Queue`时,你需要在主进程中先创建队列对象,然后将这个对象传递给每个子进程,在子进程中使用这个对象来存储数据。
subprocess.call('adb start-server') time.sleep(3) # 通过adb命令获取连接设备列表 adb_devices = subprocess.check_output(['adb', 'devices']).decode().split('\n')[1:-2] # 解析设备列表,获取模拟器名称 xuhao = [device.split('\t')[0] for device in adb_devices if 'emulator' in device] def main(xuhao): jiaoben = index.zhuxunhuanlei() jinchengs = [] xxxx = multiprocessing.Manager().Value(int, 0) # 创建共享内存 for xu in range(len(xuhao)): jincheng = multiprocessing.Process(target=jiaoben.zhuxunhuan, args=(xuhao[xu], xxxx)) jinchengs.append(jincheng) jincheng.start() for jincheng in jinchengs: jincheng.join() print("xxxx变量:", xxxx.value) # 在主进程中获取并打印共享内存中的变量 if __name__ == '__main__': multiprocessing.freeze_support() main(xuhao) 子程序如何传数变量 xxxx
在这段代码中,变量 `xxxx` 是通过 `multiprocessing.Manager().Value` 方法创建的共享内存变量,可以在多个进程之间共享。在主进程中创建共享内存变量后,可以将其作为参数传递给子进程的函数,子进程可以通过修改共享内存变量的值来实现数据交互。在这段代码中,子进程函数 `jiaoben.zhuxunhuan` 的定义不在代码中给出,但是可以将 `xxxx` 作为参数传递给该函数,如下所示:
```python
def zhuxunhuan(self, xuhao, xxxx):
# 子进程操作共享内存变量
xxxx.value += 1
```
在子进程中,通过修改共享内存变量 `xxxx` 的值来实现数据交互。注意,在使用共享内存变量时,需要使用 `xxxx.value` 来获取和修改其值,因为共享内存变量是一个代理对象,它的值保存在共享的内存中。
阅读全文