3 使用Python加速文件传输和文件复制 Giampaolo RodolaZero-copy syscalls 支持零拷贝的系统调用 ● sendfile() ● copy_file_range() ● mmap() ● splice() / vmsplice() / tee() ● KTLS (kernel-space TLS) sendfile() (zero-copy) import socket, os sock = socket.create_server((""0 码力 | 78 页 | 654.51 KB | 1 年前3
Python 标准库参考指南 2.7.18 starmap() func, seq func(*seq[0]), func(*seq[1]), ⋯ starmap(pow, [(2,5), (3,2), (10, 3)]) --> 32 9 1000 tee() it, n it1, it2, ⋯itn 将一个迭代器拆 分为 n 个迭代器 takewhile()pred, seq seq[0], seq[1], ⋯, 直到 pred 真值测试失败 takewhile(lambda predicate(x): yield x else: break itertools.tee(iterable[, n=2]) Return n independent iterators from a single iterable. Roughly equivalent to: def tee(iterable, n=2): it = iter(iterable) deques = [collections popleft() return tuple(gen(d) for d in deques) 一旦tee() 实施了一次分裂,原有的 iterable 不应再被使用;否则 tee 对象无法得知 iterable 可能已向后 迭代。 tee 迭 代 器 不 是 线 程 安 全 的。 当 同 时 使 用 由 同 一 个tee() 调 用 所 返 回 的 迭 代 器 时 可 能 引 发RuntimeError,即使原本的0 码力 | 1552 页 | 7.42 MB | 9 月前3
Python 标准库参考指南 2.7.18 starmap() func, seq func(*seq[0]), func(*seq[1]), ⋯ starmap(pow, [(2,5), (3,2), (10, 3)]) --> 32 9 1000 tee() it, n it1, it2, ⋯itn 将一个迭代器拆 分为 n 个迭代器 takewhile()pred, seq seq[0], seq[1], ⋯, 直到 pred 真值测试失败 takewhile(lambda predicate(x): yield x else: break itertools.tee(iterable[, n=2]) Return n independent iterators from a single iterable. Roughly equivalent to: def tee(iterable, n=2): it = iter(iterable) deques = [collections popleft() return tuple(gen(d) for d in deques) 一旦tee() 实施了一次分裂,原有的 iterable 不应再被使用;否则 tee 对象无法得知 iterable 可能已向后 迭代。 tee 迭 代 器 不 是 线 程 安 全 的。 当 同 时 使 用 由 同 一 个tee() 调 用 所 返 回 的 迭 代 器 时 可 能 引 发RuntimeError,即使原本的0 码力 | 1552 页 | 7.42 MB | 9 月前3
Python 标准库参考指南 2.7.18 starmap() func, seq func(*seq[0]), func(*seq[1]), ⋯ starmap(pow, [(2,5), (3,2), (10, 3)]) --> 32 9 1000 tee() it, n it1, it2, ⋯itn 将一个迭代器拆 分为 n 个迭代器 takewhile()pred, seq seq[0], seq[1], ⋯, 直到 pred 真值测试失败 takewhile(lambda predicate(x): yield x else: break itertools.tee(iterable[, n=2]) Return n independent iterators from a single iterable. Roughly equivalent to: def tee(iterable, n=2): it = iter(iterable) deques = [collections popleft() return tuple(gen(d) for d in deques) 一旦tee() 实施了一次分裂,原有的 iterable 不应再被使用;否则 tee 对象无法得知 iterable 可能已向后 迭代。 tee 迭 代 器 不 是 线 程 安 全 的。 当 同 时 使 用 由 同 一 个tee() 调 用 所 返 回 的 迭 代 器 时 可 能 引 发RuntimeError,即使原本的0 码力 | 1552 页 | 7.42 MB | 9 月前3
Python 标准库参考指南 3.13 takewhile() predicate, seq seq[0], seq[1], 直到 predi- cate 未通过 takewhile(lambda x: x<5, [1,4, 6,3,8]) → 1 4 tee() it, n it1, it2, ... itn 将一个迭代器 拆分为 n 个迭代器 zip_longest() p, q, ... (p[0], q[0]), (p[1], q[1]), . before_and_after()。 itertools.tee(iterable, n=2) 从一个可迭代对象中返回 n 个独立的迭代器。 大致相当于: def tee(iterable, n=2): if n < 0: raise ValueError if n == 0: return () iterator = _tee(iterable) result = [iterator] for _ in range(n - 1): result.append(_tee(iterator)) return tuple(result) class _tee: def __init__(self, iterable): it = iter(iterable) if isinstance(it, _tee): self.iterator = it.iterator self.link0 码力 | 2246 页 | 11.74 MB | 9 月前3
Python 标准库参考指南 3.13 takewhile() predicate, seq seq[0], seq[1], 直到 predi- cate 未通过 takewhile(lambda x: x<5, [1,4, 6,3,8]) → 1 4 tee() it, n it1, it2, ... itn 将一个迭代器 拆分为 n 个迭代器 zip_longest() p, q, ... (p[0], q[0]), (p[1], q[1]), . before_and_after()。 itertools.tee(iterable, n=2) 从一个可迭代对象中返回 n 个独立的迭代器。 大致相当于: def tee(iterable, n=2): if n < 0: raise ValueError if n == 0: return () iterator = _tee(iterable) result = [iterator] for _ in range(n - 1): result.append(_tee(iterator)) return tuple(result) class _tee: def __init__(self, iterable): it = iter(iterable) if isinstance(it, _tee): self.iterator = it.iterator self.link0 码力 | 2242 页 | 11.73 MB | 9 月前3
Python 标准库参考指南 3.7.13 takewhile() pred, seq seq[0], seq[1], ..., 直到 pred 真值测试失败 takewhile(lambda x: x<5, [1, 4,6,4,1]) --> 1 4 tee() it, n it1, it2, ... itn 将一个迭代 器拆分为 n 个迭代器 zip_longest()p, q, ... (p[0], q[0]), (p[1], q[1]), .. predicate(x): yield x else: break itertools.tee(iterable, n=2) 从一个可迭代对象中返回 n 个独立的迭代器。 下面的 Python 代码能帮助解释 tee 做了什么(尽管实际的实现更复杂,而且仅使用了一个底层的 FIFO 队列)。 大致相当于: def tee(iterable, n=2): it = iter(iterable) deques mydeque.popleft() return tuple(gen(d) for d in deques) 一旦tee() 实施了一次分裂,原有的 iterable 不应再被使用;否则 tee 对象无法得知 iterable 可能已 向后迭代。 tee 迭代器不是线程安全的。当同时使用由同一个tee() 调用所返回的迭代器时可能引 发RuntimeError,即使原本的 iterable 是线程安全的。0 码力 | 1846 页 | 9.09 MB | 9 月前3
Python 标准库参考指南 3.7.13 takewhile() pred, seq seq[0], seq[1], ..., 直到 pred 真值测试失败 takewhile(lambda x: x<5, [1,4, 6,4,1]) --> 1 4 tee() it, n it1, it2, ... itn 将一个迭代器 拆分为 n 个迭代器 zip_longest() p, q, ... (p[0], q[0]), (p[1], q[1]), . predicate(x): yield x else: break itertools.tee(iterable, n=2) 从一个可迭代对象中返回 n 个独立的迭代器。 下面的 Python 代码能帮助解释 tee 做了什么(尽管实际的实现更复杂,而且仅使用了一个底层的 FIFO 队列)。 大致相当于: def tee(iterable, n=2): it = iter(iterable) deques popleft() return tuple(gen(d) for d in deques) 一旦tee() 实施了一次分裂,原有的 iterable 不应再被使用;否则 tee 对象无法得知 iterable 可能已向后 迭代。 tee 迭 代 器 不 是 线 程 安 全 的。 当 同 时 使 用 由 同 一 个tee() 调 用 所 返 回 的 迭 代 器 时 可 能 引 发RuntimeError,即使原本的0 码力 | 1961 页 | 9.14 MB | 9 月前3
Python 标准库参考指南 3.11.10 takewhile() pred, seq seq[0], seq[1], ..., 直到 pred 真值测试失败 takewhile(lambda x: x<5, [1, 4,6,4,1]) --> 1 4 tee() it, n it1, it2, ... itn 将一个迭代 器拆分为 n 个迭代器 zip_longest()p, q, ... (p[0], q[0]), (p[1], q[1]), .. 少于两个值则它将为 空。 大致相当于: def pairwise(iterable): # pairwise('ABCDEFG') --> AB BC CD DE EF FG a, b = tee(iterable) next(b, None) return zip(a, b) 在 3.10 版本加入. itertools.permutations(iterable, r=None) 连续返回由 iterable: if predicate(x): yield x else: break itertools.tee(iterable, n=2) 从一个可迭代对象中返回 n 个独立的迭代器。 The following Python code helps explain what tee does (although the actual implementation is more complex0 码力 | 2248 页 | 11.10 MB | 9 月前3
Python 标准库参考指南 3.11.10 takewhile() pred, seq seq[0], seq[1], ..., 直到 pred 真值测试失败 takewhile(lambda x: x<5, [1,4, 6,4,1]) --> 1 4 tee() it, n it1, it2, ... itn 将一个迭代器 拆分为 n 个迭代器 zip_longest() p, q, ... (p[0], q[0]), (p[1], q[1]), . 中少于两个值则它将为空。 大致相当于: def pairwise(iterable): # pairwise('ABCDEFG') --> AB BC CD DE EF FG a, b = tee(iterable) next(b, None) return zip(a, b) 在 3.10 版本加入. itertools.permutations(iterable, r=None) 连续返回由 iterable: if predicate(x): yield x else: break itertools.tee(iterable, n=2) 从一个可迭代对象中返回 n 个独立的迭代器。 The following Python code helps explain what tee does (although the actual implementation is more complex0 码力 | 2399 页 | 11.19 MB | 9 月前3
共 68 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7













