4 python下多线程的限制以及多进程中传递参数的方式

python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。

多进程间共享数据,可以使用 multiprocessing.Value 和 multiprocessing.Array

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

5  python多线程与多进程的区别:

在UNIX平台上,当某个进程终结之后,该进程需要被其父进程调用wait,否则进程成为僵尸进程(Zombie)。所以,有必要对每个Process对象调用join()方法 (实际上等同于wait)。对于多线程来说,由于只有一个进程,所以不存在此必要性。

多进程应该避免共享资源。在多线程中,我们可以比较容易地共享资源,比如使用全局变量或者传递参数。在多进程情况下,由于每个进程有自己独立的内存空间,以上方法并不合适。此时我们可以通过共享内存和Manager的方法来共享资源。但这样做提高了程序的复杂度,并因为同步的需要而降低了程序的效率。

6  请写出一段Python代码实现删除一个list里面的重复元素

 

>>> l = [1,1,2,3,4,5,4]

>>> list(set(l))

[1, 2, 3, 4, 5]

或者

d = {}

for x in mylist:

    d[x] = 1

mylist = list(d.keys())

利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']:

 

def normalize(name):

    return name[0].upper()+name[1:].lower()

def normalizeList(inputlist):

    return list(map(normalize, inputlist))

 

本文首发于Python黑洞网,博客园同步跟新

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄