如果我 运行 我的 python 代码在同一台电脑上的不同虚拟机上进行多处理,GIL 会干扰吗?

Will GIL interfere if I run my python code with multiprocessing in it on different virual machine on the same pc?

我目前有一个 python 脚本,可以从单个 url 抓取数据。

为了加快进程我在脚本中使用了池多处理模块,为了便于解释,这个脚本被称为"script_one.py"。

脚本它专门做一个"get request"从目标url收集json/html结果并不断切换代理地址,并将结果保存在文本文件中。

我的问题是: 如果我 运行 在多个虚拟机上使用相同的代码 (script_one.py),我是否会进一步加快进程而不会导致 GIL 出现任何问题?

下面是我的代码:

import requests,time,random
from multiprocessing import Pool


def script_one(file_name,from_letter,to_letter):
    print('Here it does the get request and collects data')
    print('Here it saves on file')



if __name__ == '__main__':
    with Pool(5) as p:
        print(p.starmap(script_one,[('r_ba', 'r', 'rba'),('rbrca', 'rb', 'rca'),('rcrda', 'rc', 'rda'),
                                 ('rdrea', 'rd', 'rea'),('rerfa', 're', 'rfa'),('rfrga', 'rf', 'rga'),
                                 ('rgrha', 'rg', 'rha'),('rhria', 'rh', 'ria'),('rirja', 'ri', 'rja'),
                                 ('rjrka', 'rj', 'rka'),('rkrla', 'rk', 'rla'),('rlrma', 'rl', 'rma'),
                                 ('rmrna', 'rm', 'rna'),('rnroa', 'rn', 'roa'),('rorpa', 'ro', 'rpa'),
                                 ('rprqa', 'rp', 'rqa'),('rqrra', 'rq', 'rra'),('rrrsa', 'rr', 'rsa'),
                                 ('rsrta', 'rs', 'rta'),('rtrua', 'rt', 'rua'),('rurva', 'ru', 'rva'),
                                 ('rvrwa', 'rv', 'rwa'),('rwrxa', 'rw', 'rxa'),('rxrya', 'rx', 'rya'),
                                 ('ryrza', 'ry', 'rza'),('rzr0a', 'rz', 'r0a')]))

         p.close()
         p.join()

目前有多种选择: - 多重处理 - 多线程 - 并行使用多个虚拟机 - 对于 windows 用户,我还找到了使用多个桌面的好方法(我猜应该对 linux 用户同样有效) - 您也可以同时手动 运行 多个终端 windows,因为(信用证:@MatteoItalia)在请求期间等待套接字 GIL 被释放。

来源:@MatteoItalia