我有一个 python 文件,它使用 SQLAlchemy 来定义给定数据库中的所有表,包括所有适用的索引和外键约束。该文件如下所示:
Base = declarative_base()
class FirstLevel(Base):
__tablename__ = 'first_level'
first_level_id = Column(Integer, index=True, nullable=False, primary_key=True, autoincrement=True)
first_level_col1 = Column(String(100), index=True)
first_level_col2 = Column(String(100))
first_level_col3 = Column(String(100))
class SecondLevel(Base):
__tablename__ = 'second_level'
second_level_id = Column(Integer, index=True, nullable=False, primary_key=True, autoincrement=True)
first_level_id = Column(None, ForeignKey(FirstLevel.first_level_id, onupdate='cascade', ondelete='cascade', deferrable=True), index=True, nullable=False)
second_level_col1 = Column(String(100), index=True)
second_level_col2 = Column(String(100))
second_level_col3 = Column(String(100))
class ThirdLevel(Base):
__tablename__ = 'third_level'
third_level_id = Column(Integer, index=True, nullable=False, primary_key=True, autoincrement=True)
first_level_id = Column(None, ForeignKey(FirstLevel.first_level_id, onupdate='cascade', ondelete='cascade', deferrable=True), …
Run Code Online (Sandbox Code Playgroud) 我正在使用共享的 Linux 集群,并且希望我的临时目录而不是/tmp/username
默认的/tmp
.
根据tempfile
文档,gettempdir()
应该使用$TMPDIR
环境变量来确定临时目录。
然而,事实似乎并非如此?!
$ export TMPDIR='/tmp/username'
$ python -c "\
import os
import tempfile
print(os.environ['TMPDIR'])
print(tempfile.gettempdir())"
/tmp/username
/tmp
Run Code Online (Sandbox Code Playgroud)
有什么建议么?
我希望使用Rust来加速目前用Python编写的一些文本处理程序.
为了测试两种语言的性能,我决定在一个非常简单的任务上测试它们:
STDIN
逐行读入文件.>
,则将该行保存到headers.txt
文件中.sequences.txt
文件中.对于此测试,我使用的是一个包含1000万行的fasta文件,如下所示:
$ head uniparc_active-head.fasta
>UPI0000000001 status=active
MGAAASIQTTVNTLSERISSKLEQEANASAQTKCDIEIGNFYIRQNHGCNLTVKNMCSAD
ADAQLDAVLSAATETYSGLTPEQKAYVPAMFTAALNIQTSVNTVVRDFENYVKQTCNSSA
VVDNKLKIQNVIIDECYGAPGSPTNLEFINTGSSKGNCAIKALMQLTTKATTQIAPKQVA
GTGVQFYMIVIGVIILAALFMYYAKRMLFTSTNDKIKLILANKENVHWTTYMDTFFRTSP
MVIATTDMQN
>UPI0000000002 status=active
MMTPENDEEQTSVFSATVYGDKIQGKNKRKRVIGLCIRISMVISLLSMITMSAFLIVRLN
QCMSANEAAITDAAVAVAAASSTHRKVASSTTQYDHKESCNGLYYQGSCYILHSDYQLFS
DAKANCTAESSTLPNKSDVLITWLIDYVEDTWGSDGNPITKTTSDYQDSDVSQEVRKYFC
Run Code Online (Sandbox Code Playgroud)
这是我的Python脚本:
import fileinput
with open('headers.txt', 'w') as hof, \
open('sequences.txt', 'w') as sof:
for line in fileinput.input():
if line[0] == '>':
hof.write(line)
else:
sof.write(line)
Run Code Online (Sandbox Code Playgroud)
和我的Rust脚本(我编译cargo build --release
):
use std::io;
use std::fs::File;
use std::io::Write;
use std::io::BufRead;
fn main() {
let stdin = io::stdin();
let mut headers = File::create("headers.txt").unwrap();
let mut sequences …
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个自定义类,该类在调用 as list(c)
or时返回不同的值dict(c)
。然而,我的印象是既list(c)
和dict(c)
使用c.__iter__()
引擎盖下?如果是这种情况,我怎样才能获得不同的行为调用list(c)
和dict(c)
?我知道这是可能的,因为 Python 字典和 Pandas DataFrames 有不同的 hevariours。
例如:
Foo类: def __init__(self): self._keys = ['a', 'b', 'd', 'd', 'e'] self._data = [10, 20, 30, 40, 50] def __iter__(self): 对于密钥,zip 中的值(self._keys, self._data): yield 键,值
打电话dict(c)
我得到我想要的:
>>> f = Foo() >>> dict(f) {'a':10,'b':20,'d':40,'e':50}
但是,我无法list(c)
打印出键(或值)列表,而是同时获取:
>>> f = Foo() >>> 列表(f) [('a', 10), ('b', 20), ('d', 30), ('d', 40), ('e', 50)]
字典的等效代码要清晰得多:
>>> f = …
我正在使用Python 3.6和ericvsmith的dataclasses
backport软件包。
看来通话dataclasses.asdict(my_dataclass)
比通话慢约10倍my_dataclass.__dict__
:
In [172]: @dataclass
...: class MyDataClass:
...: a: int
...: b: int
...: c: str
...:
In [173]: %%time
...: _ = [MyDataClass(1, 2, "A" * 1000).__dict__ for _ in range(1_000_000)]
...:
CPU times: user 631 ms, sys: 249 ms, total: 880 ms
Wall time: 880 ms
In [175]: %%time
...: _ = [dataclasses.asdict(MyDataClass(1, 2, "A" * 1000)) for _ in range(1_000_000)]
...:
CPU times: user 11.3 s, sys: …
Run Code Online (Sandbox Code Playgroud) curl
有没有办法降低更新进度表的频率?
我需要在 CI 管道中下载一个大文件。我希望定期查看进度更新,以便 CI 管道不会自动标记为“卡住”。但是,默认情况下,curl
会经常更新其状态,因此我最终会得到包含数千行的管道日志,如下所示:
[...]
33 189G 33 64.0G 0 0 8107k 0 6:48:27 2:18:09 4:30:18 4580k
33 189G 33 64.1G 0 0 8107k 0 6:48:28 2:18:10 4:30:18 4901k
33 189G 33 64.1G 0 0 8107k 0 6:48:29 2:18:11 4:30:18 5312k
33 189G 33 64.1G 0 0 8106k 0 6:48:31 2:18:12 4:30:19 5003k
33 189G 33 64.1G 0 0 8106k 0 6:48:32 2:18:13 4:30:19 4991k
33 189G 33 64.1G 0 0 8105k 0 6:48:34 2:18:14 …
Run Code Online (Sandbox Code Playgroud) 根据Python 3.6发行说明," 现在保留了类属性定义顺序".这在PEP 520中更详细地描述.
但是,我似乎无法让这个工作?
例如:
class Foo:
c = 1
b = 2
a = 3
print(Foo.__dict__)
# mappingproxy({'__dict__': <attribute '__dict__' of 'Foo' objects>,
# '__doc__': None,
# '__module__': '__main__',
# '__weakref__': <attribute '__weakref__' of 'Foo' objects>,
# 'a': 3,
# 'b': 2,
# 'c': 1})
Run Code Online (Sandbox Code Playgroud)
要么:
class Foo:
def __init__(self, c=1, b=2, a=3):
self.c = c
self.b = b
self.a = a
foo = Foo()
foo.__dict__
# {'a': 3, 'b': 2, 'c': 1} …
Run Code Online (Sandbox Code Playgroud) python ×5
curl ×1
database ×1
pandas ×1
performance ×1
postgresql ×1
python-3.6 ×1
rust ×1
sqlalchemy ×1